package com.example.jancarlos.oscillationtest;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;


public class MainActivity extends Activity {

    private Timer timer;
    private TextView textView;
    private float yStart, xStart;
    private int yPunto = 0, xPunto;
    private int periodoAggiornamento;


    private int moduloFluttuazione = 50;
    private int moduloFluttuazionePunto = 250;




    private final int STRINGA_IN_OBLIQUO = 1;
    private final int PUNTO_SINUSOIDALE = 2;
    private final int PUNTO_OBLIQUO = 3;

    private int effettoDaEseguire = PUNTO_OBLIQUO;

    static float i = 0;
    static final float K_PER_RADIANT = 0.017453292f;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //textView = new TextView( this );
        textView = (TextView) findViewById(R.id.text_view);
        //textView.setText(getResources().getString(R.string.text_view_string));
        final RelativeLayout layout = (RelativeLayout)findViewById(R.id.the_view);
        //layout.addView(textView);

        final TextView punto = new TextView(this);
        punto.setText("     ");
        punto.setBackgroundColor(Color.CYAN);
        layout.addView(punto);
        //punto.setVisibility(View.INVISIBLE);


        periodoAggiornamento = getMillis(60);

        timer = new Timer();

        timer.scheduleAtFixedRate( new TimerTask() {


            @Override
            public void run() {
                if (layout.getWidth() != 0) {

                    if(yStart == 0 ){
                        yStart = textView.getY();
                        xStart = textView.getX();
                    }

                    if(yPunto == 0){
                        xPunto = layout.getWidth()/2;
                        punto.setX( xPunto );
                        yPunto = layout.getHeight()/2;
                        punto.setY( yPunto );
                    }

                    switch (effettoDaEseguire){
                        case 1 :    float spostamento = moduloFluttuazione * (float) Math.sin(System.currentTimeMillis() / 100 );
                                    textView.setY(yStart + spostamento );
                                    textView.setX(xStart + spostamento );
                                    //Oppure con il cosenzo, ma riportato in fase ...
                                    //textView.setX(xStart + moduloFluttuazione * (float) Math.cos(  System.currentTimeMillis() / 100  - Math.PI/2 ));
                                    break;

                        case 2 :
                                    float spostamentoPunto = moduloFluttuazionePunto * (float) Math.sin( i*K_PER_RADIANT );
                                    punto.setY(yPunto + spostamentoPunto);
                                    i++;
                                    break;

                        case 3:      spostamentoPunto = moduloFluttuazionePunto * (float) Math.sin( i*K_PER_RADIANT );
                                    punto.setY(yPunto + spostamentoPunto);
                                    punto.setX(xPunto + spostamentoPunto);
                                    i++;
                                    break;
                    }
                }
            }
        },
        periodoAggiornamento, periodoAggiornamento );


    }

    private int getMillis( float frequence ){
        return Math.round( 1/frequence * 1000 ) ;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
